package org.dsun.json.bean;

import org.dsun.json.exception.JsonElementException;

/**
 * 今夜你会不会来，你的爱还在不在！
 * @author donga
 * @version 1.1
 * @since 2011-8-15
 */
public class JsonElement{
	private String key;
	private JsonValue value;
	
	public JsonElement(){
		
	}
	
	public JsonElement(String key,JsonValue value){
		if(!checkKey(key)){
			throw new JsonElementException(String.format("key:%s,不符合条件", key));
		}
		this.key=key;
		this.value=value;
	}
	

	public String getKey() {
		return key;
	}
	public void setKey(String key) {
		if(!checkKey(key)){
			throw new JsonElementException(String.format("key:%s,不符合条件", key));
		}
		this.key = key;
	}
	
	public JsonValue getValue() {
		return value;
	}

	public void setValue(JsonValue value) {
		this.value = value;
	}

	/**
	 * 检测Key值是否符合java规范
	 * 由于json没有改限制所有如果单纯的只是读取json这里可以无需调用
	 * @param key
	 * @return
	 */
	static public boolean checkKey(String key){
		if(key==null || "".equals(key)){
			return false;
		}
		char head=key.charAt(0);
		if((head>=65 && head<=90) ||( head>=97 && head<=122) || head=='_'){
			int index=1;
			char c;
			while(index<key.length()){
				c=key.charAt(index);
				if((c>=65 && c<=90) ||( c>=97 && c<=122)||(c>=48 && c<=57) || c=='_'){
					index++;
				}else{
					return false;
				}
			}
		}else{
			return false;
		}
		return true;
	}
	
	@Override
	public String toString(){
		if(key==null){
			return "";
		}else{
			String temp="\""+key.toString()+"\""+":";
			if(value==null){
				return temp+"null";
			}else{
				return temp+value.toString();
			}
		}
	}
}
